package com.test.service.aop;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

import java.text.SimpleDateFormat;

/**
 * 创建人： HBZ，时间： 2017/7/25 11:31.
 * 说明：横切关注点，这里是打印时间
 */
@Aspect
@Component
public class TimeHandlerAnno {
    public static SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-mm-dd HH:mm:ss SSS");

    /**
     * 当aspectj版本低于1.7.4的时候会报错：0 can't find referenced pointcut pointCut
     */
//    @Pointcut("execution(* com.test.service.aop.AopTestImpl2.printHelloWorld(..))&& args())")
//    public void pointCut()
//    {
//
//    }


    @Before("execution(public void com.test.service.aop.AopTestImpl1.printHelloWorld())&& args())")
//    @Before("execution(* com.test.service.aop.AopTestImpl2.printHelloWorld(..))&& args())")
//    @Before("pointCut()")
    public void printBeginTime()
    {
        System.out.println("注解 开始 = " + dateFormat.format( System.currentTimeMillis()));
    }
   /* public void printEndTime()
    {
        System.out.println("结束 = " +  dateFormat.format( System.currentTimeMillis()));
    }

    //    环绕通知
    public Object around(ProceedingJoinPoint joinpoint) {
        Object result = null;
        try {
            System.out.println("环绕通知开始 日志记录");
            long start = System.currentTimeMillis();

            //有返回参数 则需返回值
            result =  joinpoint.proceed();

            long end = System.currentTimeMillis();
            System.out.println("总共执行时长" + (end - start) + " 毫秒");
            System.out.println("环绕通知结束 日志记录");
        } catch (Throwable t) {
            System.out.println("出现错误");
        }
        return result;
    }*/
}
